$(function() {
    getCartList();
    // 点击+按钮，文本框数字加一
    $(document).on('click', '.increment' , function () {
        var n = $(this).siblings(".itxt").val();
        n++;
        // console.log(n);
        $(this).siblings(".itxt").val(n);
        // 小计模块
        // num为获取过来的单价，用substr()截取字符串把前边的￥去掉
        var num = $(this).parents(".p-num").siblings(".p-price").html().substr(1);
        // toFixed(2)保留两位小数
        var price = (num * n).toFixed(2);
        $(this).parents(".p-num").siblings(".p-sum").html("￥" + price);
        getSum();
        //同步数据库
        var cartId = $(this).parent().parent().prev().prev().children(".cartId").text();
        // console.log(cartId);
        incrementCart(n,cartId,price);
    })
    // 点击-按钮，文本框数字减一
    $(document).on('click', '.decrement' , function () {
        var n = $(this).siblings(".itxt").val();
        n <= 1 ? n : n--;
        $(this).siblings(".itxt").val(n);
        // 小计模块
        var num = $(this).parents(".p-num").siblings(".p-price").html().substr(1);
        // toFixed(2)保留两位小数
        var price = (num * n).toFixed(2);
        $(this).parents(".p-num").siblings(".p-sum").html("￥" + price);
        getSum();
        //同步数据库
        var cartId = $(this).parent().parent().prev().prev().children(".cartId").text();
        decrementCart(n,cartId,price);
    })

    $(document).on('change', '.checkall' , function () {
        // 当全选按钮改变时，让小复选框按钮和全选按钮保持一致（隐式迭代，不需要循环遍历）
        $(".j-checkbox, .checkall").prop("checked", $(this).prop("checked"));
        getSum();   // 计算总额函数
        // 添加背景
        // 判断是否是选中状态，是的话添加check-cart-item类，没有就移除
        if($(this).prop("checked")) {
            $(".cart-item").addClass("check-cart-item");
        } else {
            $(".cart-item").removeClass("check-cart-item");
        }
    })

    $(document).on('change', '.j-checkbox' , function () {
        if($(".j-checkbox:checked").length === $(".j-checkbox").length) {
            $(".checkall").prop("checked", true);
        } else {
            $(".checkall").prop("checked", false);
        }
        getSum();
        // 当小复选框为选中状态时，改变背景颜色（添加check-cart-item类）
        if($(this).prop("checked")) {
            $(this).parents(".cart-item").addClass("check-cart-item");
        } else {
            $(this).parents(".cart-item").removeClass("check-cart-item");
        }
    })

    $(document).on('change', '.itxt' , function () {
        var n = $(this).val();
        var num = $(this).parents(".p-num").siblings(".p-price").html().substr(1);
        // toFixed(2)保留两位小数
        var price = (num * n).toFixed(2);
        $(this).parents(".p-num").siblings(".p-sum").html("￥" + price);
        getSum();
    })
    getSum();
    // 计算总额函数
    function getSum() {
        var count = 0;
        var money = 0;
        // 只遍历选中的商品   each遍历，i为索引，ele为对象
        $(".j-checkbox:checked").parents(".cart-item").find(".itxt").each(function(i, ele) {
            count += parseInt($(ele).val());   // 会有小误差，要取整一下
        })
        $(".amount-sum em").text(count);
        $(".j-checkbox:checked").parents(".cart-item").find(".p-sum").each(function(i, ele) {
            money += parseFloat($(ele).text().substr(1));
        })
        $(".price-sum em").text("￥" + money.toFixed(2));
    }
    // 删除商品模块
    // 删除单个商品
    $(document).on('click', '.p-action' , function () {
        $(this).parents(".cart-item").remove();
        getSum();
        var cartId = $(this).parent().children(".p-goods").children(".cartId").text();
        // console.log(cartId);
        deleteACart(cartId);
    })
    //删除选定商品
    $(document).on('click', '.remove-batch' , function () {
        let values = $(".j-checkbox:checked").parents(".cart-item")
            .children(".p-goods").children(".cartId");
        $.each(values,function (index,value) {
            deleteACart($(value).text());
        })

        $(".j-checkbox:checked").parents(".cart-item").remove();
        getSum();

    })
    //清空购物车
    $(document).on('click', '.clear-all' , function () {
        $(".cart-item").remove();
        getSum();
        deleteAllCarts();
    })

})
//操作数据库方法
//修改数量
//增
function incrementCart(number,cartId,price) {
    let url = "/cart/updateCart";
    let params={
        num:number,
        cartId:cartId,
        totalPrice:price
    }
    // console.log(params);
    httpPost(url,params,function (data) {
        console.log(data)
    })
}
//减
function decrementCart(number,cartId,price) {
    let url = "/cart/updateCart";
    let params={
        num:number,
        cartId:cartId,
        totalPrice:price
    }
    // console.log(params);
    httpPost(url,params,function (data) {
        console.log(data)
    })
}
//删除单行购物车
function  deleteACart(cartId) {
    let url = "/cart/deleteCartByCartId";
    let params={
        cartId:cartId,
    }
    // console.log(params);
    httpGet(url,params,function (data) {
        console.log(data)
    })
}
//清空购物车
function deleteAllCarts() {
    let url = "/cart/deleteAllCartByUserId";
    // 取出登录的用户
    let loginUser = getLoginUser();
    let userId = loginUser.userId;
    let params={
        userId:userId,
    }
    // console.log(params);
    httpGet(url,params,function (data) {
        console.log(data)
    })
}


//遍历数据库购物车
function getCartList(){
    console.log("进入getCartList")
    let url = "/cart/selectByUserId";

    // 取出登录的用户

    let loginUser = getLoginUser();
    let userId = loginUser.userId;
    console.log("userId："+userId)
    let params={
        userId:userId
    }
    console.log("getCartList:"+params)
    httpGet(url,params,function (data) {
        renderingCartList(data);
    })
}

function renderingCartList(cartList) {
    let templateCartListHtml = $("#template_cartList").html();
    let cartListHtml = "";
    let tempCartListHtml;

    //遍历商品种类列表
    $.each(cartList,function (index,cart) {
        //后台数据填充到模板
        tempCartListHtml=templateCartListHtml.replace(/{name}/g, cart.product.name)
            .replace(/{price}/g,cart.product.price)
            .replace(/{info}/g,cart.product.info)
            .replace(/{cartId}/g,cart.cartId)
            .replace(/{num}/g,cart.num)
            .replace(/{picture}/g,cart.product.picture);

        cartListHtml+=tempCartListHtml;
    });
    console.log(cartListHtml);
    $("#div_cartList").html(cartListHtml);

}

